#define _CRT_SECURE_NO_WARNINGS 1

//#include <stdio.h>
//#include <string.h>
//#include <assert.h>
//
//void* my_memcpy(void* arr1, const void* arr2, int n)
//{
//	assert(arr1 && arr2);
//	char* str1 = (char*)arr1;
//	char* str2 = (char*)arr2;
//	int i = 0;
//	for (i = 0; i < n; i++,str1++,str2++)
//	{
//		*str1 = *str2;
//	}
//	return arr1;
//}
//
//int main()
//{
//	char arr1[] = "xxxxxxxxxxxxx";
//	char arr2[] = "hello bit";
//	int n = strlen(arr2);
//	printf("%s", my_memcpy(arr1, arr2, 2));
//	return 0;
//}


#include <stdio.h>
#include <assert.h>

void* my_memmove(void* arr1, const void* arr2, int n)
{
	assert(arr1 && arr2);
	int i = 0;
	char* str1 = (char*)arr1;
	char* str2 = (char*)arr2;
	if (arr1 < arr2)
	{
		for (i = 0; i < n; i++)
		{
			*(str1+i) = *(str2+i);
		}
	}
	else if (arr1 > arr2)
	{
		for (i = 0; i < n; i++)
		{
			*(str1+n-1-i) = *(str2+n-1-i);
		}
	}
	return arr1;
}

int main()
{
	char arr[] = "abcdefghi";
	my_memmove(arr+2, arr, 3);
	printf("%s", arr);
	return 0;
}